package com.ruoyi.business.communication.domain;

import java.io.Serializable;

/**
 * 槽状态对象
 * 结构如下（自左向右为高位到低位的业务含义）：
 * 1) 保留高位2位（reserved2、reserved1），当前未使用
 * 2) 6位点位的下料状态（discharge6..discharge1）
 * 3) 2位限位状态：电源箱门、槽控机门（doorPowerBoxOpen、doorControllerOpen）
 * 4) 6位点位的卡堵状态（jam6..jam1）
 *
 * 说明：
 * - 使用包装类型 Boolean 以支持未知(null)/关(false)/开(true) 三态表达
 * - 如需与寄存器/线圈做位级映射，可在业务层做打包/解包
 */
public class SlotStatus implements Serializable {

    private static final long serialVersionUID = 1L;


    private PositionCountPerSlot positionCountPerSlot;

    private int businessSlotNo;//业务槽号

    // 预留高位（当前未用）
    private Boolean reserved2;
    private Boolean reserved1;

    // 6个点位下料状态（true=允许/正在；false=禁止/停止，依据业务定义）
    private Boolean discharge6;//对于四点位，表位无意义
    private Boolean discharge5;//对于四点位，表位无意义
    private Boolean discharge4;
    private Boolean discharge3;
    private Boolean discharge2;
    private Boolean discharge1;

    // 2个限位（门）开关状态：true=开，false=关
    private Boolean doorPowerBoxOpen;      // 电源箱门
    private Boolean doorControllerOpen;    // 槽控机门

    // 6个点位卡堵状态（true=卡堵；false=正常）
    private Boolean jam6;//对于四点位，表位无意义
    private Boolean jam5;//对于四点位，表位无意义
    private Boolean jam4;
    private Boolean jam3;
    private Boolean jam2;
    private Boolean jam1;

    public SlotStatus() {}  
    public SlotStatus(Boolean reserved2, Boolean reserved1, 
        Boolean discharge6, Boolean discharge5, Boolean discharge4, 
        Boolean discharge3, Boolean discharge2, Boolean discharge1, 
        Boolean doorPowerBoxOpen, Boolean doorControllerOpen, 
        Boolean jam6, Boolean jam5, Boolean jam4, Boolean jam3, Boolean jam2, Boolean jam1) {
        this.reserved2 = reserved2;
        this.reserved1 = reserved1;
        this.discharge6 = discharge6;
        this.discharge5 = discharge5;
        this.discharge4 = discharge4;
        this.discharge3 = discharge3;
        this.discharge2 = discharge2;
        this.discharge1 = discharge1;
        this.doorPowerBoxOpen = doorPowerBoxOpen;
        this.doorControllerOpen = doorControllerOpen;
        this.jam6 = jam6;
        this.jam5 = jam5;
        this.jam4 = jam4;
        this.jam3 = jam3;
        this.jam2 = jam2;
        this.jam1 = jam1;
    }

    public PositionCountPerSlot getPositionCountPerSlot() { return positionCountPerSlot; }
    public void setPositionCountPerSlot(PositionCountPerSlot positionCountPerSlot) { this.positionCountPerSlot = positionCountPerSlot; }

    public int getBusinessSlotNo() { return businessSlotNo; }
    public void setBusinessSlotNo(int businessSlotNo) { this.businessSlotNo = businessSlotNo; }

    public Boolean getReserved1() { return reserved1; }
    public void setReserved1(Boolean reserved1) { this.reserved1 = reserved1; }
    public Boolean getReserved2() { return reserved2; }
    public void setReserved2(Boolean reserved2) { this.reserved2 = reserved2; }

    public Boolean getDischarge1() { return discharge1; }
    public void setDischarge1(Boolean discharge1) { this.discharge1 = discharge1; }
    public Boolean getDischarge2() { return discharge2; }
    public void setDischarge2(Boolean discharge2) { this.discharge2 = discharge2; }
    public Boolean getDischarge3() { return discharge3; }
    public void setDischarge3(Boolean discharge3) { this.discharge3 = discharge3; }
    public Boolean getDischarge4() { return discharge4; }
    public void setDischarge4(Boolean discharge4) { this.discharge4 = discharge4; }
    public Boolean getDischarge5() { return discharge5; }
    public void setDischarge5(Boolean discharge5) { this.discharge5 = discharge5; }
    public Boolean getDischarge6() { return discharge6; }
    public void setDischarge6(Boolean discharge6) { this.discharge6 = discharge6; }

    public Boolean getDoorPowerBoxOpen() { return doorPowerBoxOpen; }
    public void setDoorPowerBoxOpen(Boolean doorPowerBoxOpen) { this.doorPowerBoxOpen = doorPowerBoxOpen; }
    public Boolean getDoorControllerOpen() { return doorControllerOpen; }
    public void setDoorControllerOpen(Boolean doorControllerOpen) { this.doorControllerOpen = doorControllerOpen; }

    public Boolean getJam1() { return jam1; }
    public void setJam1(Boolean jam1) { this.jam1 = jam1; }
    public Boolean getJam2() { return jam2; }
    public void setJam2(Boolean jam2) { this.jam2 = jam2; }
    public Boolean getJam3() { return jam3; }
    public void setJam3(Boolean jam3) { this.jam3 = jam3; }
    public Boolean getJam4() { return jam4; }
    public void setJam4(Boolean jam4) { this.jam4 = jam4; }
    public Boolean getJam5() { return jam5; }
    public void setJam5(Boolean jam5) { this.jam5 = jam5; }
    public Boolean getJam6() { return jam6; }
    public void setJam6(Boolean jam6) { this.jam6 = jam6; }
}


